#ifndef ITERADOR_H_
#define ITERADOR_H_

/**
 * @class Iterador Iterador.h "src/estruturas/Iterador.h"
 * @brief Interface para Arvore.
 * Possue alguns métodos de iteração da árvore, \n
 * apontando para o primeiro, verificando qual o próximo item...
*/
template <class TIPO>
class Iterador
{

public:

	/*
	 * @fn ~Iterador()
	 * @brief Destrutor
	 * Remove a instancia do objeto, para limpar a mémoria.
	 */
	virtual ~Iterador() { }

	/*
	 * @fn virtual void Primeiro()
	 * @brief Aponta para o primeiro item.
	 */
	virtual void Primeiro() = 0;

	/*
	 * @fn virtual void Proximo()
	 * @brief Pega o próximo item.
	 */
	virtual void Proximo() = 0;

	/*
	 * @fn virtual bool Final()
	 * @brief Verifica se é o ultimo item.
	 */
	virtual bool Final() = 0;

	/*
	 * @fn virtual TIPO GetItem()
	 * @brief Obtem um item.
	 */
	virtual TIPO GetItem() = 0;
};

#endif /*ITERADOR_H_*/
